﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using EFITransmissao.Entidade;
using System.Collections;
using Dados.ConexaoSQL;
using System.Data;
using Dados.ConexaoCE;

namespace EFITransmissao.Dados.DAO
{
    public class DAOControle
    {
        public DAOControle(){}

        public static string ObterMesFatControle()
        {
            string retorno = string.Empty;
            try
            {
                string _stringconexao = @"Persist Security Info = false; 
                                        Data Source = .\Program Files\EFI_Sulgipe\Leituras.sdf";

                CEMSDataAccess db = new CEMSDataAccess(_stringconexao);
                DataTable dt = db.ExecutaConsulta("ObterMesFatControle", null);

                foreach (DataRow dr in dt.Rows)
                {
                    retorno = dr["mesfat"].ToString();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return retorno;
        }

        public static void Desmarcar_PartesREC_SQL(Roteiro obj)
        {            
            try
            {
                MSSQLDataAccess db = new MSSQLDataAccess();
                db.ExecutaAtualizacao_DesmacaPartesREC_SQL("Desmarcar_PartesREC_SQL", obj);

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return;
        }

        public static void Desmarcar_PartesENV_SQL(Roteiro obj)
        {
            try
            {
                MSSQLDataAccess db = new MSSQLDataAccess();
                db.ExecutaAtualizacao_DesmacaPartesENV_SQL("Desmarcar_PartesENV_SQL", obj);

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return;
        }
        
        public static bool ObterStatusPartesEnviadas(int matricula)
        {
            bool retorno = false;
            try
            {   
                MSSQLDataAccess db = new MSSQLDataAccess();
                DataTable dt = db.ExecutaConsultaStatusLeituraDisponivel("StatusPartesEnviadas", matricula);

                foreach (DataRow item in dt.Rows)
                {
                    if (int.Parse(item["NPartes"].ToString()) == int.Parse(item["PartesRec"].ToString()))
                    {
                        retorno = true;
                    }
                    else
                    {
                        retorno = false;
                    }
                }
            }
            catch (Exception ex)
            {                
                throw new Exception(ex.Message);
            }

            return retorno;
        }

        public static void DesmarcarRoteiroSQL(Roteiro obj)
        {
            try
            {
                DeletarRegistroLeituraSQL(obj);
                                
                MSSQLDataAccess dtAccess = new MSSQLDataAccess();
                dtAccess.ExecutaAtualizacaoObjeto("DesmarcarControleRoteiroSQL", obj);

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return;
        }

        private static void DeletarRegistroLeituraSQL(Roteiro obj)
        {
            try
            {
                MSSQLDataAccess dtAccess = new MSSQLDataAccess();
                dtAccess.ExecutaAtualizacaoObjeto("DeletarControleLeiturasSQL", obj);

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return;
        }

        public static void DesmarcarLeiturasSQL(Roteiro obj)
        {
            try
            {
                
                MSSQLDataAccess dtAccess = new MSSQLDataAccess();
                dtAccess.ExecutaAtualizacaoObjeto("DesmarcarControleLeiturasSQL", obj);

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return;
        }

        public static DataTable ObterRotaDiasLeitura()
        {
            DataTable dt = new DataTable();

            try
            {
                string _stringconexao = @"Persist Security Info = false; 
                                        Data Source = .\Program Files\EFI_Sulgipe\Leituras.sdf";

                CEMSDataAccess db = new CEMSDataAccess(_stringconexao);
                dt = db.ExecutaConsulta("ObterRotaDiasLeitura", null);
                                
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return dt;
        }
    }
}
